package com.ruoyi.project.stock.stock.mapper;

import com.ruoyi.project.device.space.domain.BasCargoSpace;
import com.ruoyi.project.port.domain.InventoryRespondData;
import com.ruoyi.project.stock.stock.domain.BasStock;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 库存表Mapper接口
 * 
 * @author ruoyi
 * @date 2023-04-10
 */
public interface BasStockMapper 
{
    /**
     * 查询库存表
     * 
     * @param stockId 库存表主键
     * @return 库存表
     */
    public BasStock selectBasStockByStockId(String stockId);

    /**
     * 查询库存表列表
     * 
     * @param basStock 库存表
     * @return 库存表集合
     */
    public List<BasStock> selectBasStockList(BasStock basStock);

    /**
     * 库存查询接口
     * @param basStock
     * @return
     */
    public List<InventoryRespondData> selectBasStockListForApi(BasStock basStock);

    /**
     * 新增库存表
     * 
     * @param basStock 库存表
     * @return 结果
     */
    public int insertBasStock(BasStock basStock);

    /**
     * 修改库存表
     * 
     * @param basStock 库存表
     * @return 结果
     */
    public int updateBasStock(BasStock basStock);

    /**
     * 删除库存表
     * 
     * @param stockId 库存表主键
     * @return 结果
     */
    public int deleteBasStockByStockId(String stockId);

    /**
     * 批量删除库存表
     * 
     * @param stockIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBasStockByStockIds(String[] stockIds);
    /**
    * 指定货位出
    */
    public void assignCargoOut(Map<String,String> map);

    List<BasStock> findByThePlatoonAndTheColumnAndTheFloor(BasCargoSpace space);
    /**
    * 查询异常库存
    */
    List<BasStock> selectErrorStockList(BasStock basStock);

    int updateStockByIdAndCode(@Param("cargoSpaceId") String cargoSpaceId, @Param("trayCode") String trayCode, @Param("sumQuantity") String sumQuantity);

    int selectCountStockByCode(@Param("trayCode") String trayCode, @Param("cargoSpaceId") String cargoSpaceId);

    Integer selectSumQuantity(@Param("trayCode") String trayCode, @Param("cargoSpaceId") String cargoSpaceId);

    List<BasStock> selectBasStockByTrayCode(String trayCode);

    List<BasStock> selectBasStockByTrayCodeAndProductId(@Param("trayCode") String trayCode,@Param("productId") String productId);
}
